home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / game / worm2 / warm2g.bas < prev    next >
BASIC Source File  |  1995-08-19  |  8KB  |  200 lines

  1. 10 *準備
  2. 20 DIM BO%(4012),WA%(3980),CT%(1515)
  3. 30 LOAD@"BOMB.SND",BO%
  4. 40 LOAD@"SPLASH.SND",WA%
  5. 50 LOAD@"CTUIN.SND",CT%
  6. 60 LOAD@"FM_1.FMB"
  7. 70 CLS:GOSUB*おーぷにんぐ
  8. 80 LOCATE 24,10:PRINT"    音楽     :     桂&広安":WAIT 210
  9. 90 LOCATE 24,12:PRINT"  アイデア   :    淳平&綾太":WAIT 210
  10. 100 LOCATE 24,14:PRINT" プログラム  :      新之介":WAIT 220
  11. 110 *たいとる
  12. 120 SCREEN@ 1:CLS:SCREEN@
  13. 130 FOR A=0 TO 10:LINE(A,A)-(320-A,240-A),PSET,[A*25,A*15,A*15],B:NEXT A
  14. 140 LINE(11,11)-(309,229),PSET,[60,120,80],BF
  15. 150 SYMBOL(35,50),"VS.みみ2ー",3,5,[100,30,250],,,12
  16. 160 WAIT 240:SYMBOL(180,100),"GREAT",3,3,[100,250,100],,,7
  17. 170 FOR A=0 TO 5:LINE(100+A,155+A)-(215-A,175-A),PSET,[A*50,A*50,A*50],B
  18. 180 NEXT A:LINE(105,160)-(210,170),PSET,0,BF
  19. 190 LOCATE 35,17:PRINT "PUSH RUN"
  20. 200 WA=0:DE=100:M=0
  21. 210 IF PTRIG(1)+PTRIG(2)<>4 THEN GOTO 210
  22. 220 *もーど選択
  23. 230 SCREEN@ 1:CLS:WAIT 50
  24. 240 MM=0:MN=5 '------MN=モードの数
  25. 250 FOR A=0 TO 10:LINE(A,A)-(320-A,240-A),PSET,[A*25,A*15,A*15],B:NEXT A
  26. 260 RESTORE *もーど選択:FOR A=0 TO MN:READ MO$(A):NEXT A
  27. 270 DATA "爆弾投下デスマッチ","密室浸水デスマッチ","位置交換デスマッチ"
  28. 280 DATA "恐怖転送デスマッチ","反射光線デスマッチ","  ノーマルゲーム "
  29. 290 DATA  
  30. 300 SYMBOL(89,30),"      開始    ",1,1,7',,,1
  31. 310 SYMBOL(89,70),"     モード",1,1,7',,,1
  32. 320 SYMBOL(89,90),MO$(M),1,1,7',,,1
  33. 330 SYMBOL(89,110),"    難易度変更 ",1,1,7',,,1
  34. 340 SYMBOL(135,130),STR$(200-DE),1,1,7',,,1
  35. 350 SYMBOL(89,150),"   ウェイト変更",1,1,7',,,1
  36. 360 SYMBOL(135,170),STR$(WA),1,1,7',,,1
  37. 370 SYMBOL(89,190),"      終了",1,1,7',,,1
  38. 380 FOR A=0 TO 180 STEP 8
  39. 390 LINE(80,A+30)-(240,A+38),AND,[0,A*1.4!,255-A*1.4!],BF:NEXT A
  40. 400 P=PTRIG(1)+PTRIG(2):T=PAD(1)+PAD(2)
  41. 410 LINE(80,MM*40+29)-(238,MM*40+49),PSET,[200,200,200],B:WAIT 5
  42. 420 LINE(80,MM*40+29)-(238,MM*40+49),PSET,0,B
  43. 430 IF T=1 THEN MM=MM+(MM<>0):PCMPLAY BO%
  44. 440 IF T=5 THEN MM=MM-(MM<>4):PCMPLAY BO%
  45. 450 IF T=3 THEN ON MM GOSUB *もーど+,*難易度+,*ウェイト+
  46. 460 IF T=7 THEN ON MM GOSUB *もーど-,*難易度-,*ウェイト-
  47. 470 IF P=0 THEN GOTO 400
  48. 480 IF MM=4 THEN GOTO *終わり
  49. 490 IF MM=0 THEN GOTO *設定
  50. 500 GOTO 400
  51. 510 *もーど+
  52. 520 IF M=MN THEN RETURN
  53. 530 SYMBOL(89,90),MO$(M),1,1,0:M=M+1:SYMBOL(89,90),MO$(M),1,1,7
  54. 540 RETURN
  55. 550 *もーど-
  56. 560 IF M=0 THEN RETURN
  57. 570 SYMBOL(89,90),MO$(M),1,1,0:M=M-1:SYMBOL(89,90),MO$(M),1,1,7
  58. 580 RETURN
  59. 590 *難易度+
  60. 600 IF DE=<0 THEN RETURN
  61. 610 SYMBOL(135,130),STR$(200-DE),1,1,0:DE=DE-10:
  62. 620 SYMBOL(135,130),STR$(200-DE),1,1,7:RETURN
  63. 630 *難易度-
  64. 640 IF DE=>200 THEN RETURN
  65. 650 SYMBOL(135,130),STR$(200-DE),1,1,0:DE=DE+10:
  66. 660 SYMBOL(135,130),STR$(200-DE),1,1,7:RETURN
  67. 670 *ウェイト+
  68. 680 IF WA=>500 THEN RETURN
  69. 690 SYMBOL(135,170),STR$(WA),1,1,0:WA=WA+10:
  70. 691 SYMBOL(135,170),STR$(WA),1,1,7:RETURN
  71. 700 *ウェイト-
  72. 710 IF WA=<0 THEN RETURN
  73. 720 SYMBOL(135,170),STR$(WA),1,1,0:WA=WA-10
  74. 721 SYMBOL(135,170),STR$(WA),1,1,7:RETURN
  75. 730 *終わり:FOR A=0 TO 40:PCMPLAY CT%:WAIT 3:NEXT A:END
  76. 740 *設定
  77. 750 RANDOMIZE TINE
  78. 760 PCMPLAY WA%:WAIT 70:LINE(11,11)-(309,229),PSET,0,BF:PLAY OFF
  79. 770 XI(0)=0:XI(1)=0:YI(0)=1:YI(1)=-1:B=0:BB=1
  80. 780 X(0)=50:Y(0)=50:X(1)=270:Y(1)=190:
  81. 790 T=0                            '---タイマー
  82. 800 ON M+1 GOTO *爆弾準備,*浸水準備,*交換準備,*移動準備,*反射準備
  83. 810 *爆弾準備
  84. 820 GOTO *めいん
  85. 830 *浸水準備
  86. 840 BX(0)=11:BY(0)=11:GOTO *めいん
  87. 850 *交換準備
  88. 860 GOTO *めいん
  89. 870 *移動準備
  90. 880 GOTO *めいん
  91. 890 *反射準備
  92. 900 FOR A=0 TO 9
  93. 910 BX(A)=60+RND*200
  94. 920 BY(A)=60+RND*120
  95. 930 BXI(A)=SGN(RND*2-1)
  96. 940 BYI(A)=SGN(RND*2-1)
  97. 950 NEXT A
  98. 960 GOTO *めいん
  99. 970 *めいん
  100. 980 FOR WW=0 TO WA*10:NEXT WW:T=T+1:SWAP B,BB
  101. 990 IF PLAY(0)=0 THEN ON ((M+1) MOD 2)+1 GOSUB *音楽1,*音楽2
  102. 1000 IF PTRIG(B+1)=1 THEN I(B)=3 ELSE I(B)=1
  103. 1010 P=PAD(B+1):PP=PTRIG(B+1)
  104. 1020 I(B)=-(PP<>1)-(PP=1)*3
  105. 1030 ON P GOSUB *上,*右上,*右,*右下,*下,*左下,*左,*左上 
  106. 1040 X(B)=X(B)+XI(B)*I(B):Y(B)=Y(B)+YI(B)*I(B)
  107. 1050 IF I(B)=1 THEN 1090
  108. 1060 IF POINT(X(B)-SGN(XI(B)),Y(B)-SGN(YI(B)))+POINT(X(B),Y(B))+POINT(X(B)+SGN(XI(B)),Y(B)+SGN(YI(B)))<>0 THEN GOTO *END
  109. 1070 LINE(X(B)-SGN(XI(B))-1,Y(B)-SGN(YI(B))-1)-(X(B)-SGN(XI(B))+1,Y(B)-SGN(YI(B))+1),PSET,[80,255*B,255*(1-B)],B
  110. 1080 GOTO 1110
  111. 1090 IF POINT(X(B),Y(B))<>0 THEN GOTO *END
  112. 1100 PSET(X(B),Y(B)),[80,255*B,255*(1-B)]
  113. 1110 ON M+1 GOSUB *爆弾,*浸水,*交換,*移動,*反射
  114. 1120 GOTO 980
  115. 1130 *上   IF XI(B)= 0 AND YI(B)= 1 THEN RETURN
  116. 1140 XI(B)= 0:YI(B)=-1:RETURN
  117. 1150 *右上 IF XI(B)=-1 AND YI(B)= 1 THEN RETURN
  118. 1160 XI(B)= 1:YI(B)=-1:RETURN
  119. 1170 *右   IF XI(B)=-1 AND YI(B)= 0 THEN RETURN
  120. 1180 XI(B)= 1:YI(B)= 0:RETURN
  121. 1190 *右下 IF XI(B)=-1 AND YI(B)=-1 THEN RETURN
  122. 1200 XI(B)= 1:YI(B)= 1:RETURN
  123. 1210 *下   IF XI(B)= 0 AND YI(B)=-1 THEN RETURN
  124. 1220 XI(B)= 0:YI(B)= 1:RETURN
  125. 1230 *左下 IF XI(B)= 1 AND YI(B)=-1 THEN RETURN
  126. 1240 XI(B)=-1:YI(B)= 1:RETURN
  127. 1250 *左   IF XI(B)= 1 AND YI(B)= 0 THEN RETURN
  128. 1260 XI(B)=-1:YI(B)= 0:RETURN
  129. 1270 *左上 IF XI(B)= 1 AND YI(B)= 1 THEN RETURN
  130. 1280 XI(B)=-1:YI(B)=-1:RETURN
  131. 1290 *END 
  132. 1300 IF I(B)=1 THEN 1320
  133. 1310 LINE(X(B)-SGN(XI(B))-1,Y(B)-SGN(YI(B))-1)-(X(B)-SGN(XI(B))+1,Y(B)-SGN(YI(B))+1),PSET,[80,255*B,255*(1-B)],B:GOTO 1330
  134. 1320 PSET(X(B),Y(B)),[80,255*B,255*(1-B)]
  135. 1330 BEEP 1:WAIT 20:BEEP 0:FOR C=0 TO 16
  136. 1340 CIRCLE(X(B),Y(B)),C,[5*C,C*12*B,C*12*(1-B)]:NEXT C
  137. 1350 FOR C=16 TO 0 STEP -1
  138. 1360 CIRCLE(X(B),Y(B)),C,[5*C,C*12*B,C*12*(1-B)],,,,F,PASTEL:NEXT C
  139. 1370 SYMBOL(40,50),STR$(BB+1)+"PLAYERの勝ち",2,2,[200,130,200],,,5
  140. 1380 IF B=1 THEN P1=P1+1
  141. 1390 IF B=0 THEN P2=P2+1
  142. 1400 SYMBOL(70,80),STR$(P1),2,2,[150,50,250],,,5
  143. 1410 SYMBOL(130,80)," 対 ",2,2,[150,250,250],,,5
  144. 1420 SYMBOL(190,80),STR$(P2),2,2,[150,250,50],,,5
  145. 1430 B=PTRIG(1)+PTRIG(2):IF B=0 THEN GOTO 1430
  146. 1440 GOTO *もーど選択
  147. 1450 *爆弾 
  148. 1460 IF T MOD (DE+1)<>0 THEN RETURN
  149. 1470 CIRCLE(RND(-RND)*320,RND(RND)*240),16,[80,250,0],,,,F
  150. 1480 PCMPLAY BO%:RETURN
  151. 1490 *浸水
  152. 1500 IF T MOD (DE+1)<>0 THEN RETURN
  153. 1510 LINE(BX(0),BY(0))-(320-BX(0),240-BY(0)),PSET,[80,0,250],B
  154. 1520 LINE(BX(0)+1,BY(0)+1)-(319-BX(0),239-BY(0)),PSET,[80,0,250],B
  155. 1530 BX(0)=BX(0)+2:BY(0)=BY(0)+2:PCMPLAY WA%:RETURN
  156. 1540 *交換
  157. 1550 IF T MOD (DE+1)<>0 THEN RETURN
  158. 1560 SWAP X(0),X(1):SWAP Y(0),Y(1)
  159. 1570 SWAP XI(0),XI(1):SWAP YI(0),YI(1)
  160. 1580 PCMPLAY CT%:RETURN
  161. 1590 *移動
  162. 1600 IF T MOD (DE+1)<>0 THEN RETURN
  163. 1610 X(1)=RND(-RND)*280+20:Y(1)=RND(RND)*200+20
  164. 1620 X(0)=RND(-RND)*280+20:Y(0)=RND(RND)*200+20
  165. 1630 PCMPLAY CT%:RETURN
  166. 1640 *反射
  167. 1650 FOR A=0 TO INT((200-DE)/50)
  168. 1660 BXI(A)=BXI(A)*(POINT(BX(A)+BXI(A),BY(A))*2+1)
  169. 1670 BYI(A)=BYI(A)*(POINT(BX(A),BY(A)+BYI(A))*2+1)
  170. 1680 PSET(BX(A),BY(A)),7:BX(A)=BX(A)+BXI(A):BY(A)=BY(A)+BYI(A)
  171. 1690 PSET(BX(A),BY(A)),3:NEXT A
  172. 1700 RETURN
  173. 1710 *音楽1
  174. 1720 PLAY OFF
  175. 1730 A$="T150O4L8@108V6((AA>C+EDDF+A<)3A4R4R4R4)2(GAGF+EF+E4)3GGGGG"
  176. 1740 B$="T150O4L8@15V6((EC+EC+F+DF+D)3A4R4R4R4)2(G<B>G<B>EC+EC+)3G"
  177. 1750 C$="T150O3L8@26V8((EEEEDDDD)3A4R4R4R4)2(DDDDEEEE)3D"
  178. 1760 D$="T150O3L8@37V13((CRCCCRC4)4)2(CRCCCRC4)3CRCCCRC"
  179. 1770 PLAY A$,B$,C$,D$
  180. 1780 RETURN
  181. 1790 *音楽2
  182. 1800 PLAY OFF
  183. 1810 A$="T150O5L8@108(CCCCCCCCDDDCR4R4)2(EEGEEEF+R)2GGFFEEDDC2"
  184. 1820 B$="T150O3L8@113R1R1EEEEEEEEFFFER4R4EEREEREFFRFFRF<BR>CC<BBAAGGF2"
  185. 1830 C$="T150O3L8@19R1R1C1D4C4R4R4G2E2G2E2G2A2G2"
  186. 1840 D$="T150O4L8@58V6R1R1(G2E2)3(G2E2)2G2E"
  187. 1850 E$="T150O4L8@91V5R1R1(C1&D2CR4.V3)3"
  188. 1860 F$="T150O4L8@91V5R1R1(E1&F2ER4.V3)3"
  189. 1870 PLAY A$,B$,C$,D$,E$,F$
  190. 1880 RETURN
  191. 1890 *おーぷにんぐ
  192. 1900 PLAY OFF:BGM 1
  193. 1910 A$="T80O4L8@20V6((C<BG2&G4>C<BA2&A4>)2CD2CE<B>CD2CE<B2AG2>)2&G2R2@22@V85C<BG2&G4>@V68C<BA2&A4>@V56C<BG2&G4>@V44C<BA2&A4>@V32C<BG2&G4>@V20C<BA2&A4>@V10C<BG2&G4>@V0C<BA2&A4>"
  194. 1920 B$="T80O4L8@90V7(R1R1)2CD2CE<B>CD2CE<B2AG2>(C<BG2R4>C<BA2R4>)2CD2CE<B>CD2CE<B2AG&G2>R2"
  195. 1930 C$="T80O6L8@9V6(R1R1)2CD2CE<B>CD2CE<B2AG2>(C<BG2R4>C<BA2R4>)2CD2CE<B>CD2CE<B2AG&G2>R2"
  196. 1940 D$="T80O3L8@113V5(R1R1)2(CCDDDDD4)2CCCC<BBBB>(CC<G2>R4CCD2R4)2(CCDDDDD4)2CCCC<BBBB&B2R2"
  197. 1950 E$="T80O3L8@108(R1R1)2(O3A>C4<A>EF4.)2(<GB>CCC<AB>C)4(<A>C4<A>EF4.)2(<GB>CCC<AB>C)2&C2R2"
  198. 1960 F$="T80O3L8@36R1R1R1V1(C]])4(C]])4@67O3C1V10(L8O3@36CRCC>@62C2@36C4CC)5L8O3@36CRCC>@62C2@36C4CC@36R2C4C4"
  199. 1970 PLAY A$,B$,C$,D$,E$,F$:RETURN
  200.